<?php

    global $mikron;
    $mikron->Schema->Add(dirname(__FILE__).'/schema.xml', 'Схема комментариев');
    $mikron->OperatingInstructions->AddFunction('MIKRON_COMMENTS', 'OperatingInstruction_MikronComments');

    /**
    * Sample/Пример
    * 
    * {{MIKRON_COMMENTS entity=string id=int captcha=1 returnpage=string caption=string formcaption=string hidelist=0/1 submitcaption=string}}
    * hidelist - скрыть список имеющихся комментариев
    * formcaption - заголовок формы добавления комментария
    * caption - заголовок списка имеющихся комментариев
    * submitcaption - текст кнопки добавления комментария
    */

    function OperatingInstruction_MikronComments($parameters)
    {
        global $mikron;
        $entity = $parameters['entity'];
        $id = $parameters['id'];
        $captcha = true;
        $caption = 'Комментарии:';
        $formcaption = 'Добавить комментарий:';
        $hidelist = false;
        $submitcaption = 'Добавить';
        $button_caption = 'Добавить';
        $returnpage = null;
        $width = 240;
        if(array_key_exists('width', $parameters))
        {
            $width = (int)$parameters['width'];
        }
        if(array_key_exists('returnpage', $parameters))
        {
            $returnpage = $parameters['returnpage'];
        }
        if(array_key_exists('button_caption', $parameters))
        {
            $button_caption = $parameters['button_caption'];
        }
        if(array_key_exists('captcha', $parameters))
        {
            $captcha = (int)$parameters['captcha'] == 1;
        }
        if(array_key_exists('submitcaption', $parameters))
        {
            $submitcaption = $parameters['submitcaption'];
        }
        if(array_key_exists('hidelist', $parameters))
        {
            $hidelist = (int)$parameters['hidelist'] == 1;
        }
        if(array_key_exists('caption', $parameters))
        {
            $caption = $parameters['caption'];
        }
        if(array_key_exists('formcaption', $parameters))
        {
            $formcaption = $parameters['formcaption'];
        }
        
        $cr = new Criteria();
        $cr->Add(new Criterion('entity', $entity));
        $cr->Add(new Criterion('entityid', $id));

        /**
        * Вывод имеющихся комментариев
        */
        if(!$hidelist)
        {
            if(!$mikron->Tools->IsNullOrEmpty($caption))
            {
                ?><h1><?php echo $caption; ?></h1><?php
            }
            $comments = $mikron->Queries->Query('MIKRON_COMMENT', null, $cr);
            if($comments->count() < 1)
            {
                /* ?><p>Список пуст.</p><?php */
            }
            else
            {
                $tab4 = new html_table(1, 'firsttableontablist', '100%', 0, 0);
                while($comment = $comments->fetch())
                {
                    $tab4->newcol();
                    echo str_replace("\r\n", '<br />', $comment->toString());
                }
                $tab4->end();
            }
        }

        /**
        * Вывод формы добавления комментария
        */
        $cmnt = new MIKRON_COMMENT();
        if(isset($_GET['error']))
        {
            if(isset($_SESSION['formdata']))
            {
                $formdata = $_SESSION['formdata'];
                if(array_key_exists('comment', $formdata))
                {
                    $cmnt->comment->value = $formdata['comment'];
                }
            }
        }
        $cmnt->entity->value = $entity;
        $cmnt->entityid->value = $id;
        $cmnt->author->value = $mikron->Users->CurrentUser()->id();
        
        $blank_adr = $_SERVER['REQUEST_URI'];
        if(($pos = strpos('?&error=addcomment', $blank_adr)) === false)
        {
            $blank_adr = str_replace('?&error=addcomment', null, $blank_adr);
        }
        if(MikronClass::getActionStatus('addcomment') == 'ok')
        {
            echo 'Спасибо. Ваше сообщение успешно принято.';
        }
        else
        {
            $mikron->EntityManager->ShowFormForUsers($cmnt, $formcaption, false,
                $captcha,
                !is_null($returnpage) ? $returnpage :
                    str_replace('?&error=addcomment#aceb', null, $mikron->Tools->MakePath('&action=addcomment')
                ),
                false, null, null, null, null, null,
                $mikron->Tools->MakePath('&error=addcomment#aceb'),
                $submitcaption, null, $button_caption, $width, 'commentform');
        }
        if(isset($_GET['error']))
        {
            if($_GET['error'] == 'addcomment')
            {
                ?><a name="aceb"><font color="red">Не удалось добавить комментарий,
                т.к. введен неверный код подтверждения.</font></a><?php
            }
        }

    }

?>